package gjbsh.bangong.ds.service;

import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import gjbsh.bangong.ds.dao.组织活动单位参会名额Mapper;
import gjbsh.bangong.ds.model.组织活动单位参会名额;
import gjbsh.bangong.ds.model.组织活动单位参会名额Example;


@Service
public class 组织活动单位参会名额Service {

	@Autowired
	组织活动单位参会名额Mapper ddMapper;
	

	// 查询单位名额
	public List<Map<String, Object>> findByDeptNameAndHuodongId(String ppHuodongId,String ppDeptName) {
		if(ppDeptName!=null && !ppDeptName.equals("")) {
			ppDeptName = "%"+ppDeptName+"%";
		}
		return ddMapper.findByDeptNameAndHuodongId(ppHuodongId,ppDeptName);
	}
	
	public List<Map<String, Object>>  findByHuodongId(String ppHuodongId) {
		return ddMapper.findByHuodongId(ppHuodongId);
	}
	
	public 组织活动单位参会名额 findOne(String ppMingeId) {
		return ddMapper.selectByPrimaryKey(ppMingeId);
	}
	
	public 组织活动单位参会名额 findByDeptIdAndHuodongId(String ppDeptId,String ppHuodongId) {
		组织活动单位参会名额Example mmExample = new 组织活动单位参会名额Example();
		组织活动单位参会名额Example.Criteria criteria = mmExample.createCriteria();
		criteria.and组织活动idEqualTo(ppHuodongId).and设站单位idEqualTo(ppDeptId);
		List<组织活动单位参会名额> mm组织活动单位参会名额List = ddMapper.selectByExample(mmExample);
		return mm组织活动单位参会名额List.size()==0 ? null :mm组织活动单位参会名额List.get(0);
	}
	
	// 通过主键删除
	public boolean delete(String ppMingeId) {
		return ddMapper.deleteByPrimaryKey(ppMingeId) >= 0 ? true:false;
	}
	
	// 删除指定单位的纪录
	public boolean  deleteByDeptIdAndHuodongId(String ppDeptId,String ppHuodongId) {
		组织活动单位参会名额Example mmExample = new 组织活动单位参会名额Example();
		组织活动单位参会名额Example.Criteria criteria = mmExample.createCriteria();
		criteria.and组织活动idEqualTo(ppHuodongId).and设站单位idEqualTo(ppDeptId);
		int mmisok = ddMapper.deleteByExample(mmExample);
		return mmisok>=0 ? true:false;
	} 

	// 新增 
	public boolean add(组织活动单位参会名额 pp组织活动单位参会名额) {
		return ddMapper.insert(pp组织活动单位参会名额) == 1;
	}
	
	// 修改 
	public boolean Modify(组织活动单位参会名额 pp组织活动单位参会名额) {
		return ddMapper.updateByPrimaryKeySelective(pp组织活动单位参会名额) == 1;
	}
	
	// 新增单位名额
	@Transactional
	public boolean addAll(组织活动单位参会名额 pp组织活动单位参会名额) {
		
		boolean isok = deleteByDeptIdAndHuodongId(pp组织活动单位参会名额.get设站单位id(), pp组织活动单位参会名额.get组织活动id());
		
		if(!isok) {
			throw new RuntimeException("删除旧单位名额失败");
		}
		// 新增
		if(!add(pp组织活动单位参会名额)) {
			throw new RuntimeException("新增单位名额失败");
		}
		
		return true;
	}

}
